package com.gobang.domain.message;

import lombok.*;

/**
 * 游戏状态更新消息DTO
 * 服务器向客户端发送的游戏状态更新消息
 * 
 * @author System
 * @since 1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public class GameStateUpdateMessage extends WebSocketMessage {
    
    /**
     * 游戏状态更新数据
     */
    private GameStateUpdateData data;
    
    /**
     * 游戏状态更新数据内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class GameStateUpdateData {
        /**
         * 房间ID
         */
        private String roomId;
        
        /**
         * 当前轮到谁
         */
        private String currentTurn;
        
        /**
         * 最后一步棋
         */
        private LastMoveInfo lastMove;
        
        /**
         * 步数统计
         */
        private Integer moveCount;
        
        /**
         * 游戏状态
         */
        private String gameStatus;
        
        /**
         * 棋盘状态（15x15数组）
         */
        private int[][] boardState;
    }
    
    /**
     * 最后一步棋信息内部类
     */
    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    @Builder
    public static class LastMoveInfo {
        /**
         * 行坐标
         */
        private Integer row;
        
        /**
         * 列坐标
         */
        private Integer col;
        
        /**
         * 棋子颜色
         */
        private String color;
    }
    
    /**
     * 构造函数
     */
    public GameStateUpdateMessage(GameStateUpdateData data) {
        super("GAME_STATE_UPDATE");
        this.data = data;
    }
} 